package com.estar.jinyou.test;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import org.apache.http.protocol.HTTP;




/**
 * 发送请求到核心理赔Servlet中
 * 
 * 
 */
public class HttpHeader3 {

	/**
	 * 发送XML数据到核心
	 * 
	 * @param uri --
	 *            servlet地址
	 * @param functionName --
	 *            要调用的方法名
	 * @param sendXml --
	 *            要发送的XML数据
	 * @return -- 返回的XML数据
	 * @throws Exception
	 */
	public String  sendHttpData(String uri, String functionName, String sendXml)
			throws Exception {
		String retXMLString = "";
		
		HttpURLConnection urlConn=null;
		InputStreamReader isr=null;
		BufferedReader in=null;
		DataOutputStream dos=null;
		
		try {
			if(!"userValidate".equals(functionName)){
				
				System.out.println("发送的信息：" + sendXml);
				System.out.println("发送的functionName：" + functionName);
			}
			System.out.println("访问的url地址：" + uri);
			
			
			String encoderJson = URLEncoder.encode(sendXml, HTTP.UTF_8); //解决中文乱码问题
			URL url = new URL(uri);
							   
			 urlConn = (HttpURLConnection) url
					.openConnection(); // 打开链接
			urlConn.setRequestProperty("Content-Type",
					"application/json;charset=UTF-8");
			urlConn.setDoOutput(true);
			urlConn.setDoInput(true);
			// urlConn.addRequestProperty("iszip", "1");//添加压缩标志
			// 设置超时问题
			urlConn.setConnectTimeout(120 * 1000);
			urlConn.setReadTimeout(120 * 1000);
			urlConn.setRequestMethod("POST"); // 设置请求方法
			urlConn.setUseCaches(false);
			urlConn.setInstanceFollowRedirects(false);
//			urlConn.addRequestProperty("functionName", functionName);
//			urlConn.addRequestProperty("isEncrypt", "1");
			urlConn.connect();
			 dos = new DataOutputStream(urlConn
					.getOutputStream()); // 获取输出流
			
		
			dos.writeBytes(encoderJson);
			dos.flush();
			dos.close(); // 关闭输出流

			 isr = new InputStreamReader(urlConn
					.getInputStream(), "GB2312");//UTF-8
			 in = new BufferedReader(isr);
			String inputLine;
			while ((inputLine = in.readLine()) != null) { // 读取返回数据
				retXMLString = retXMLString + inputLine + "\n";
			}
			if(!"userValidate".equals(functionName)){
				System.out.println("返回的信息----"+retXMLString);
			}
			
			in.close(); // 关闭输入流
			isr.close();
			urlConn.disconnect(); // 关闭连接
		} catch (Exception e) {
			e.printStackTrace();
			return null;

		}finally{
//			in.close(); // 关闭输入流
//			isr.close();
//			dos.close(); // 关闭输出流
//			urlConn.disconnect(); // 关闭连接
			if(null != in){
				in.close();
				}
				if(null != isr){
				isr.close();
				}
				if(null != dos){
				dos.close();
				}
				if(null != urlConn){
				urlConn.disconnect();
				}

		}
		return retXMLString; // 返回
	}

	/**
	 * 发送XML数据到核心
	 * 
	 * @param functionName --
	 *            要调用的方法名
	 * @param sendXml --
	 *            要发送的XML数据
	 * @return -- 返回的XML数据
	 * @throws Exception
	 */
	public String  sendHttpData(String functionName,String sendXml)
			throws Exception {
		String url =functionName;
		String returnStr = this.sendHttpData(url, functionName, sendXml);
		return returnStr;
	}

}
